<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<!--[if lt IE 9]>
  <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
<![endif]-->
<title>VIM 中文帮助: 阿拉伯语支持及编辑</title>
<link rel="stylesheet" href="vim-stylesheet.css" type="text/css" />
<link rel="canonical" href="https://yianwillis.github.io/vimcdoc/doc/arabic.html" />
<script type="text/javascript" src="vimcdoc.js"></script>
<meta name="viewport" content="width=device-width, initial-scale=1" />
</head>
<body>
<nav id=banner>
<form action=tags.html target="tag_iframe">
  <input type="text" name="tag" id="tag" placeholder="标签搜索">
</form>
<iframe name="tag_iframe" src=""></iframe>
<a href="help.html">帮助总览</a> &middot;
<hr/>
<a href="quickref.html">快速参考</a> &middot;
<a href="index.html">命令索引</a> &middot;
<a href="eval.html#functions">函数列表</a> &middot;
<a href="quickref.html#option-list">选项列表</a> &middot;
<hr/>
<a href="usr_toc.html">用户手册</a> &middot;
<a href="help.html#reference_toc">参考手册</a> &middot;
</nav>

<header>
<h2>arabic</h2>
</header>
<article id=outer>
<section class=inner>
<b class="vimtag"> <a name="arabic.txt">arabic.txt</a> </b>    适用于 Vim 9.0 版本。   最近更新: 2022年7月


                  <code class="vim">VIM 参考手册    by Nadim Shaikli</code>
                                <code class="vim">译者</code>: Willis


Vim 的阿拉伯语支持 (选项和映射)                                 <b class="vimtag"> <a name="Arabic">Arabic</a> </b>


                                                                <b class="vimtag"> <a name="E800">E800</a> </b>
为了使用从右到左和阿拉伯语的映射支持，需要编译 Vim 时加入  <a href="various.html#+arabic">+arabic</a>  特性。

这些功能由 Nadim Shaikli &lt;nadim-at-arabeyes.org&gt; 编写。

本文件最好在 Vim 的 GUI 版本里用以下设置阅读: 
<code class="example"></code>
<code class="example">        :set encoding=utf-8</code>
<code class="example">        :set arabicshape</code>
<code class="example"></code>
<code class="example"></code>
简介
</section><hr class="singleline" /><section class=inner>
阿拉伯语是一个需要多项特殊特性的要求很高的语言。字符是从右到左导向的，应该在屏
幕上从右到左的显示。阿拉伯语也要求字型重整: 相同的字符出现在词的不同相对位置
(开头，中间，结尾，或者单独出现) 时有不同的字型。阿拉伯语也要求两种不同的组合
形式和在一些情况下，把多达两个的字符附加在 (superimpose) 别的字符上的能力 (合
成) 或者实际把两个字符替代成一个 (组合) 的能力。最后，要正确地显示阿拉伯语，需
要 ISO-8859-6 (U+0600-U+06FF) 字体和 B-表现型 (U+FE70-U+FEFF) 字体，两者都是
所谓的 ISO-10646-1 字体的一部分。

命令、提示和帮助文件不是用阿拉伯语书写的，以使用户界面保持和标准 Vi 的界面一
致。


特色
</section><hr class="singleline" /><section class=inner>
o  就像原有的 Vim 一样，编辑从左到右的文件。

o  和从右到左两种模式下同时察看同一个文件。(这有助于编辑混合两种文字的文件)。

o  不需要终端对从右到左能力的特别支持。这项改动完全独立于硬件。只需要阿拉伯语
   的字体。

o  和原有的 Vim 兼容。几乎所有的功能都支持从右到左的模式 (除了一些漏洞以外)。

o  单个命令就可以改变键盘映射和反向插入模式。

o  从反向的插入模式退回到文件里正确的位置 (如果可能的话)。

o  单个命令可以切换完全的阿拉伯语支持。

o  在阿拉伯语模式，数字的输入是从左到右的。在输入一个非数字的字符时，它会插在
   最后一个数字的左面。

o  在命令行的反向插入模式里，提供阿拉伯语的映射。

o  如果 Vim 在一个有双向显示 (Bidi) 能力的终端模拟器中启动，那么可能有一定的双
   向显示能力。


阿拉伯语字体                                            <b class="vimtag"> <a name="arabicfonts">arabicfonts</a> </b>
</section><hr class="singleline" /><section class=inner>

Vim 要求等宽字体，这已经有很多了。阿拉伯语要求有 ISO-8859-6 和 B-表现型
(Presentation Form-B) 字体 (没有 B-型，阿拉伯语支持是 <code class="emphasis">不能</code> 用的)。强烈推荐用户
寻找所谓的 'ISO-10646-1' 字体。在因特网上找找看，或者查看 www.arabeyes.org，了
解更多关于哪里可以得到所需的阿拉伯字体的信息。


字体安装
</section><hr class="singleline" /><section class=inner>

o  在 X Window 系统下 (Unix/Linux) 安装字体

   根据你的系统，把你的 <code class="emphasis">阿拉伯</code> 字体文件复制到你选择的一个目录下。转到这个目
   录，然后执行如下命令: 
<code class="example"></code>
<code class="example">     %  mkfontdir</code>
<code class="example">     %  xset +fp path_name_of_arabic_fonts_directory</code>
<code class="example"></code>
<code class="example"></code>
使用方法
</section><hr class="singleline" /><section class=inner>
在实际在 Vim 使用阿拉伯语之前，要考虑到并完成一些设置。

o  设置阿拉伯字体

   +  对于 Vim GUI 而言，把 <a href="options.html#'guifont'">'guifont'</a> 设成你的 <code class="emphasis">阿拉伯</code> 字体。这是通过在 Vim 窗
      口输入以下命令完成的。

<code class="example">                :set guifont=你的_阿拉伯_字体</code>

      <code class="note">注意</code>: 字符串 '你的 <code class="emphasis">阿拉伯</code> 字体' 应该用一个完整的 linux/unix 系统下的字体
            名字来代替 (比如，
            -misc-fixed-medium-r-normal--20-200-75-75-c-100-iso10646-1)。

      你可以在 .vimrc 文件里加上 <a href="options.html#'guifont'">'guifont'</a> 的设置命令以得到相同的结果。换句话
      说，在你的 .vimrc 文件里加上 ':set guifont=你的 <code class="emphasis">阿拉伯</code> 字体'。

   +  在 X Window 环境上，你也可以在启动 Vim 时加上 '-fn 你的 <code class="emphasis">阿拉伯</code> 字体' 选
      项。

o  设置合适的编码
   要打开正确的阿拉伯语设置，下面的命令:

<code class="example">                :set encoding=utf-8</code>

   应该加在你的 .vimrc 文件里 (最好不要在 Vim 窗口的命令行里手工输入)。简单的
   说，把 ':set encoding=utf-8' 加到你的 '.vimrc' 文件里。

   试图在没有 UTF-8 的时候使用阿拉伯语会得到以下的<code class="note">警告</code>消息，

                                                                <b class="vimtag"> <a name="W17">W17</a> </b>  
<code class="example">     Arabic requires UTF-8, do ':set encoding=utf-8'</code>
<code class="example"></code>
o  进入阿拉伯语的设置 <code class="special">[快捷方式]</code>

   为了把事情简化和流水线化，你可以有两种方案: 或者如下启动 Vim:

<code class="example">     % vim -A my_utf8_arabic_file ...</code>

   或者在 Vim 里执行如下的命令:

<code class="example">                :set arabic</code>

   建议用户采取这两种可能的激活方式。在没有打开 <a href="options.html#'termbidi'">'termbidi'</a> 设置的情况下，两者
   都:

     1. 设置相应的键盘映射
     2. 允许删除一个单独的组合字符对
     3. 打开从右到左模式
     4. 打开从右到左的命令行模式 (影响命令行)
     5. 打开阿拉伯字型重整模式 (进行字型的替换)

   你也可以在 .vimrc 文件里这么做，只要增加这一行 ':set arabic' 就行了。

   你也可以用如下方式关闭阿拉伯语的支持:

<code class="example">                :set noarabic</code>

   它会关闭上条打开命令所做的一切，而不影响全局设置，从而也就不影响别的打开的
   缓冲区。简单地说，<a href="options.html#'noarabic'">'noarabic'</a> 命令:

     1. 关闭替换了的键盘映射
     2. 关闭删除单独的组合字符对的功能
     3. 关闭从右到左模式

   <code class="note">注意</code>: 如果终端提供了外部的双向显示 (bidi) 支持 ("mlterm" 就是一个例子)，
         <a href="options.html#'arabic'">'arabic'</a> 命令会考虑到 <a href="options.html#'termbidi'">'termbidi'</a> 设置。因为双向显示比从右到左更好，提
         供的功能更多，如果置位，我们优先使用此设置。这时，<a href="options.html#'arabic'">'arabic'</a> 只修改键盘
         映射。

         为了分离竖向窗口，置位 <a href="options.html#'termbidi'">'termbidi'</a> 时会使用 LTR 垂直分割符 "l" 或
         "𝖨"。可通过修改其颜色为前景色来隐藏此分割符: 
<code class="example">                :set fillchars=vert:l</code>
<code class="example">                :hi VertSplit ctermbg=White</code>
        <code class="note">注意</code> 这只是临时方案，并非最终方案。

   从另一方面说，如果你喜欢详细而具体的操作，你可以不用 <a href="options.html#'arabic'">'arabic'</a> 的快捷方式命
   令，这里是你需要做的 (换而言之，如果你用 ':set arabic' 就可以不用看了) -

   +  阿拉伯语的键盘映射激活

      要激活阿拉伯语的键盘映射 (也即，重新映射你的英语/拉丁语系键盘到一个类似
      于标准阿拉伯语的键盘)，把 <a href="options.html#'keymap'">'keymap'</a> 命令设置成 "arabic"。这可以由在你的
      Vim 窗口中输入以下命令完成。

<code class="example">                :set keymap=arabic</code>

      你可以把 <a href="options.html#'keymap'">'keymap'</a> 设置命令加到你的 .vimrc 文件里。也就是说，把
      ':set keymap=arabic' 加到你的 .vimrc 文件里。

      要在你的缺省映射 (英语) 和阿拉伯语的键盘映射间切换，用户最好在插入 (或
      者加入/替换) 模式下按 '<code class="keystroke">CTRL-^</code>'。命令行下会在插入模式后面提示当前映射为阿
      拉伯状态 (例如，-- INSERT Arabic --)。

   +  阿拉伯语的组合字符对的删除

      缺省时，Vim 关闭 <a href="options.html#'delcombine'">'delcombine'</a> 选项。这个选项允许删除 LAM_ALEF (LAA) 组合
      字符里的 ALEF，但还保留那个 LAM (也就是说，把组合字符恢复到原来的两个字
      符的形式 -- 这也适用于 harakat 和他们的组合形式)。你可以在你的 Vim 窗口
      下打开这个选项

<code class="example">                :set delcombine</code>

      你可以把 <a href="options.html#'delcombine'">'delcombine'</a> 设置命令加到你的 .vimrc 文件里。也就是说，把
      ':set delcombine' 加到你的 .vimrc 文件里。

   +  阿拉伯语的从右到左模式

      缺省时，Vim 以从左到右模式启动。<a href="options.html#'rightleft'">'rightleft'</a> 是改变窗口朝向的命令 - 有如
      下的设置方式，

      - 在从左到右和从右到左模式间切换可以用 ':set rightleft' 和
        ':set norightleft'。

      - 在从左到右模式时，在命令行里输入 ':set rl' (<a href="options.html#'rl'">'rl'</a> 是 rightleft 的缩
        写)。

      - 把 ':set rl' 一行放到你的 '.vimrc' 文件里，就可以一劳永逸的以从右到左
        模式启动 Vim。

   +  阿拉伯语的从右到左的命令行模式

      有些命令的编辑可以在从右到左的模式下完成。目前，这只对搜索命令适用。

      控制这点的是 <a href="options.html#'rightleftcmd'">'rightleftcmd'</a> 选项。缺省的是 "search"，也就是说在置位了
      <a href="options.html#'rightleft'">'rightleft'</a> 的窗口里会以从右到左的模式编辑搜索命令。要关闭它，

<code class="example">                :set rightleftcmd=</code>

      要重新打开从右到左方式对搜索命令进行编辑，

<code class="example">                :set rightleftcmd&amp;</code>

   +  阿拉伯语的字型重整模式

      要激活阿拉伯语所需的字型替换 (重整、合成、组合)，打开 <a href="options.html#'arabicshape'">'arabicshape'</a> 命
      令。这可以通过在我们的 Vim 窗口下执行

<code class="example">                :set arabicshape</code>

      你可以把 <a href="options.html#'arabicshape'">'arabicshape'</a> 设置命令加到你的 .vimrc 文件里。也就是说，把
      ':set arabicshape' 加到你的 .vimrc 文件里。

键盘映射/键盘                                                   <b class="vimtag"> <a name="arabickeymap">arabickeymap</a> </b>
</section><hr class="singleline" /><section class=inner>

Vim 的字符/字母编码是标准的 UTF-8。我不希望你用任何别的编码形式。

<code class="note">注意</code>: UTF-8 是一个包罗万象的编码，因此也是阿拉伯语唯一支持 (和鼓励使用) 的编码
      (不鼓励并反对用任何别的私有编码)。

o  键盘

   +  插入/替换模式下的 <code class="keystroke">CTRL-^</code> 切换阿拉伯语/拉丁语系模式。

   +  键盘映射基于 Microsoft 的键盘映射表 (阿拉伯世界的实际标准):

  +---------------------------------------------------------------------+
  |!   |@   |#   |$   |%   |^   |&amp;   |*   |(   |)   |_   |+   ||   |~  ّ |
  |1 ١ |2 ٢ |3 ٣ |4 ٤ |5 ٥ |6 ٦ |7 ٧ |8 ٨ |9 ٩ |0 ٠ |-   |=   |\   |` ذ |
  +---------------------------------------------------------------------+
       |Q  َ |W  ً |E  ُ |R  ٌ |T لإ |Y إ |U ` |I ÷ |O x |P ؛ |{ &lt; |} &gt; |
       |q ض |w ص |e ث |r ق |t ف |y غ |u ع |i ه |o خ |p ح |[ ج |] د |
       +-----------------------------------------------------------+
         |A  ِ |S  ٍ |D [ |F ] |G لأ |H أ |J ـ |K ، |L / |:   |"   |
         |a ش |s س |d ي |f ب |g ل |h ا |j ت |k ن |l م |; ك |' ط |
         +------------------------------------------------------+
           |Z ~ |X  ْ |C { |V } |B لآ |N آ |M ' |&lt; , |&gt; . |? ؟ |
           |z ئ |x ء |c ؤ |v ر |b لا |n ى |m ة |, و |. ز |/ ظ |
           +-------------------------------------------------+

限制
</section><hr class="singleline" /><section class=inner>

o  Vim 的 GUI 形式目前不支持双向显示 (也就是，能在一行里同时看到阿拉伯语和拉丁
   语系的混合文字)。


已知漏洞
</section><hr class="singleline" /><section class=inner>

有一个已知的小漏洞:

 1. 如果你在一个 LAM (U+0644) 之后插入一个 haraka (例如，Fatha (U+064E))，然后
    再插入一个 ALEF (U+0627)，期望的组合不会发生，因为夹在中间的 haraka 产生了
    一些 <code class="emphasis">不</code> 会正确显示的东西。

    临时解决方法: 不要在 LAM 和 ALEF 组合之间插入 harakat。基本上，不要期望看
                  到 harakat 和 LAM+ALEF 组合的字符的正确显示 (即使是它们之后
                  的字符也有问题)。这个问题纯粹是显示上的，在文件里存储的内容
                  包含所有的信息/编码，无一遗漏。

现在还不知道别的漏洞。

 vim:tw=78:ts=8:noet:ft=help:norl:

</section>
</article>
<footer>
Generated by vim2html
</footer>
</body>
</html>
